import {
  Module,
  NestModule,
  MiddlewareConsumer,
  RequestMethod,
} from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { LoggerMiddleware } from '../logger/logger.middleware';

@Module({
  controllers: [UserController],
  providers: [UserService],
})
//implements作用是实现接口，NestModule是Nest框架中的一个模块接口。
export class UserModule implements NestModule {
  /**
   * 配置中间件
   *
   * @param consumer 中间件消费者
   */
  configure(consumer: MiddlewareConsumer) {
    // ...
    consumer.apply(LoggerMiddleware).forRoutes({
      path: 'users', // 指定中间件应用的路由路径
      method: RequestMethod.GET, // 可选，指定HTTP方法（如GET、POST等）
      // 其他配置...
    }); // 这里省略了中间件的具体实现，实际应用中需要根据需求选择合适的中间件并传入参数。例如：consumer.apply(LoggerMiddleware, AuthMiddleware).

    // 也可以直接应用于控制器，这样会对该控制器的所有路由生效。例如：consumer.apply(LoggerMiddleware).forRoutes(UserController);
    // consumer.apply(LoggerMiddleware).forRoutes(UserController);
  }
}
